using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Attributes.DomainAttributes;
using Baci.Net.ToolKit.ArcGISProGeoprocessor.Models.Enums;
using System.Collections.Generic;
using System.ComponentModel;

namespace Baci.ArcGIS._UtilityNetworkTools
{
    /// <summary>
    /// <para>Export Subnetwork</para>
    /// <para>Exports subnetworks from a utility network into a JSON file. This tool also allows you to delete a row in the Subnetworks table as long as the Is deleted attribute is set to true. This indicates that the subnetwork controller has been removed from the subnetwork.</para>
    /// <para>将公共设施网络中的子网导出到 JSON 文件中。此工具还允许您删除子网表中的行，只要 Is deleted 属性设置为 true。这表示子网控制器已从子网中移除。</para>
    /// </summary>    
    [DisplayName("Export Subnetwork")]
    public class ExportSubnetwork : AbstractGPProcess
    {
        /// <summary>
        /// 无参构造
        /// </summary>
        public ExportSubnetwork()
        {

        }

        /// <summary>
        /// 有参构造
        /// </summary>
        /// <param name="_in_utility_network">
        /// <para>Input Utility Network</para>
        /// <para>The utility network that contains the subnetwork to export.</para>
        /// <para>包含要导出的子网的公共设施网络。</para>
        /// </param>
        /// <param name="_domain_network">
        /// <para>Domain Network</para>
        /// <para>The domain network that contains the subnetwork.</para>
        /// <para>包含子网的域网络。</para>
        /// </param>
        /// <param name="_tier">
        /// <para>Tier</para>
        /// <para>The tier that contains the subnetwork.</para>
        /// <para>包含子网的层。</para>
        /// </param>
        /// <param name="_subnetwork_name">
        /// <para>Subnetwork Name</para>
        /// <para>The name of the subnetwork to export. Select a specific source to export the corresponding subnetwork information.</para>
        /// <para>要导出的子网的名称。选择特定源以导出相应的子网信息。</para>
        /// </param>
        /// <param name="_export_acknowledged">
        /// <para>Set export acknowledged</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the LASTACKEXPORTSUBNETWORK attribute for the corresponding controller in the Subnetworks table and feature in the SubnetLine feature class is updated.
        ///   <bulletList>
        ///     <bullet_item>Checked—Updates the LASTACKEXPORTSUBNETWORK attribute for the corresponding controller in the Subnetworks table. If the controller has been marked for deletion (Is deleted = True), it will be deleted from the Subnetworks table. This option requires the input utility network to reference the default version.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Does not update the LASTACKEXPORTSUBNETWORK attribute for the corresponding controller in the Subnetworks table. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否更新子网表中相应控制器的 LASTACKEXPORTSUBNETWORK 属性以及 SubnetLine 要素类中的要素。
        ///   <bulletList>
        ///     <bullet_item>选中 - 更新子网表中相应控制器的 LASTACKEXPORTSUBNETWORK 属性。如果控制器已标记为删除 （Is deleted = True），则将从子网表中删除该控制器。此选项要求输入公共设施网络引用默认版本。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 不更新子网表中相应控制器的 LASTACKEXPORTSUBNETWORK 属性。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// </param>
        /// <param name="_out_json_file">
        /// <para>Output JSON</para>
        /// <para>The name and location of the JSON file to be generated.</para>
        /// <para>要生成的 JSON 文件的名称和位置。</para>
        /// </param>
        public ExportSubnetwork(object _in_utility_network, object _domain_network, object _tier, object _subnetwork_name, _export_acknowledged_value _export_acknowledged, object _out_json_file)
        {
            this._in_utility_network = _in_utility_network;
            this._domain_network = _domain_network;
            this._tier = _tier;
            this._subnetwork_name = _subnetwork_name;
            this._export_acknowledged = _export_acknowledged;
            this._out_json_file = _out_json_file;
        }
        public override string ToolboxName => "Utility Network Tools";

        public override string ToolName => "Export Subnetwork";

        public override string CallName => "un.ExportSubnetwork";

        public override List<string> AcceptEnvironments => [];

        public override object[] ParameterInfo => [_in_utility_network, _domain_network, _tier, _subnetwork_name, _export_acknowledged.GetGPValue(), _out_json_file, _condition_barriers, _function_barriers, _include_barriers.GetGPValue(), _traversability_scope.GetGPValue(), _propagators, _out_utility_network, _include_geometry.GetGPValue(), _result_types, _result_network_attributes, _result_fields];

        /// <summary>
        /// <para>Input Utility Network</para>
        /// <para>The utility network that contains the subnetwork to export.</para>
        /// <para>包含要导出的子网的公共设施网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Input Utility Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _in_utility_network { get; set; }


        /// <summary>
        /// <para>Domain Network</para>
        /// <para>The domain network that contains the subnetwork.</para>
        /// <para>包含子网的域网络。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Domain Network")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _domain_network { get; set; }


        /// <summary>
        /// <para>Tier</para>
        /// <para>The tier that contains the subnetwork.</para>
        /// <para>包含子网的层。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Tier")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _tier { get; set; }


        /// <summary>
        /// <para>Subnetwork Name</para>
        /// <para>The name of the subnetwork to export. Select a specific source to export the corresponding subnetwork information.</para>
        /// <para>要导出的子网的名称。选择特定源以导出相应的子网信息。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Subnetwork Name")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _subnetwork_name { get; set; }


        /// <summary>
        /// <para>Set export acknowledged</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the LASTACKEXPORTSUBNETWORK attribute for the corresponding controller in the Subnetworks table and feature in the SubnetLine feature class is updated.
        ///   <bulletList>
        ///     <bullet_item>Checked—Updates the LASTACKEXPORTSUBNETWORK attribute for the corresponding controller in the Subnetworks table. If the controller has been marked for deletion (Is deleted = True), it will be deleted from the Subnetworks table. This option requires the input utility network to reference the default version.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Does not update the LASTACKEXPORTSUBNETWORK attribute for the corresponding controller in the Subnetworks table. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否更新子网表中相应控制器的 LASTACKEXPORTSUBNETWORK 属性以及 SubnetLine 要素类中的要素。
        ///   <bulletList>
        ///     <bullet_item>选中 - 更新子网表中相应控制器的 LASTACKEXPORTSUBNETWORK 属性。如果控制器已标记为删除 （Is deleted = True），则将从子网表中删除该控制器。此选项要求输入公共设施网络引用默认版本。 </bullet_item><para/>
        ///     <bullet_item>未选中 - 不更新子网表中相应控制器的 LASTACKEXPORTSUBNETWORK 属性。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Set export acknowledged")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public _export_acknowledged_value _export_acknowledged { get; set; }

        public enum _export_acknowledged_value
        {
            /// <summary>
            /// <para>ACKNOWLEDGE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("ACKNOWLEDGE")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>NO_ACKNOWLEDGE</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("NO_ACKNOWLEDGE")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Output JSON</para>
        /// <para>The name and location of the JSON file to be generated.</para>
        /// <para>要生成的 JSON 文件的名称和位置。</para>
        /// <para></para>
        /// </summary>
        [DisplayName("Output JSON")]
        [Description("")]
        [Option(OptionTypeEnum.Must)]
        public object _out_json_file { get; set; }


        /// <summary>
        /// <para>Condition Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier condition on features based on a comparison to a network attribute or check for a category string. A condition barrier uses a network attribute, an operator and a type, and an attribute value. For example, stop a trace when a feature has the Device Status attribute equal to the specific value of Open. When a feature meets this condition, the trace stops. If you're using more than one attribute, you can use the Combine using parameter to define an And or an Or condition.</para>
        ///   <para>Condition barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Name—Choose to filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of different operators.  </bullet_item><para/>
        ///     <bullet_item>Type—Choose a specific value or network attribute from the value that is specified in the name parameter.  </bullet_item><para/>
        ///     <bullet_item>Value—Set a specific value of the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///     <bullet_item>Combine Using—Set this value if you have multiple attributes to add. You can combine them using an And or an Or condition.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>The condition barrier operator values are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO—The attribute is equal to the value.</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL—The attribute is not equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN—The attribute is greater than the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO—The attribute is greater than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN—The attribute is less than the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO—The attribute is less than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES—A bitwise AND operation where all bits in the value are present in the attribute (bitwise AND == value).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES—A bitwise AND operation where not all of the bits in the value are present in the attribute (bitwise AND != value).</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY—A bitwise AND operation where at least one bit in the value is present in the attribute (bitwise AND == True).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY—A bitwise AND operation where none of the bits in the value are present in the attribute (bitwise AND == False).</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The condition barrier type options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>SPECIFIC_VALUE—Filter by a specific value.</bullet_item><para/>
        ///     <bullet_item>NETWORK_ATTRIBUTE—Filter by a network attribute.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The Combine Using values are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>AND—Combine the condition barriers.</bullet_item><para/>
        ///     <bullet_item>OR—Use if either condition barrier is met.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>根据与网络属性的比较或检查类别字符串，对要素设置可穿越性屏障条件。条件屏障使用网络属性、运算符和类型以及属性值。例如，当功能的“设备状态”属性等于特定值“打开”时，停止跟踪。当要素满足此条件时，跟踪将停止。如果要使用多个属性，则可以使用“组合使用”参数来定义“和”或“条件。</para>
        /// <para>条件屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>名称 - 选择按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 - 从多个不同的运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>类型 - 从 name 参数中指定的值中选择特定值或网络属性。</bullet_item><para/>
        ///     <bullet_item>值 （Value） - 根据运算符值设置将导致终止的输入属性类型的特定值。</bullet_item><para/>
        ///     <bullet_item>合并方式 （Combine Using） - 如果要添加多个属性，请设置此值。您可以使用 And 或 Or 条件将它们组合在一起。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>条件屏障运算符值如下：</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO - 属性等于值。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN - 属性大于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO - 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN - 属性小于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO - 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES - 按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>条件屏障类型选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>SPECIFIC_VALUE - 按特定值过滤。</bullet_item><para/>
        ///     <bullet_item>NETWORK_ATTRIBUTE - 按网络属性进行过滤。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>“组合使用”值如下：</para>
        ///   <bulletList>
        ///     <bullet_item>AND—组合条件屏障。</bullet_item><para/>
        ///     <bullet_item>或 （OR） - 如果满足任一条件屏障，则使用。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Condition Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _condition_barriers { get; set; } = null;


        /// <summary>
        /// <para>Function Barriers</para>
        /// <para><xdoc>
        ///   <para>Sets a traversability barrier on features based on a function. Function barriers can be used to do such things as restrict how far the trace travels from the starting point, or set a maximum value to stop a trace. For example, the length of each line traveled is added to the total distance traveled so far. When the total length traveled reaches the value specified, the trace stops.</para>
        ///   <para>Function barrier components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Function—Choose from a number of different calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Attribute—Choose to filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of different operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Set a specific value of the input attribute type that, if discovered, will cause the termination.  </bullet_item><para/>
        ///     <bullet_item>Use Local Values—Calculate values in each direction as opposed to an overall global value. For example, use for a function barrier that is calculating the sum of Shape length where the trace terminates if the value is greater than or equal to 4. In the global case, after you have traversed two edges with a value of 2, you have already reached a shape length sum of 4, so the trace stops. If local values are used, the local values along each path change, so the trace goes farther.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <bulletList>
        ///     <bullet_item>TRUE—Use local values.</bullet_item><para/>
        ///     <bullet_item>FALSE—Use global values. This is the default.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>Possible values for the function barrier function options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>AVERAGE—The average of the input values.</bullet_item><para/>
        ///     <bullet_item>COUNT—The number of features.</bullet_item><para/>
        ///     <bullet_item>MAX—The maximum of the input values.</bullet_item><para/>
        ///     <bullet_item>MIN—The minimum of the input values.</bullet_item><para/>
        ///     <bullet_item>ADD—Add the values.</bullet_item><para/>
        ///     <bullet_item>SUBTRACT—Subtract the values. Subnetwork controllers and loops trace types do not support the subtract function.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>For example, the starting point feature has a value of 20. The next feature has a value of 30. If you use the minimum function, the result is 20, maximum is 30, add is 50, average is 25, count is 2, and subtract is -10.</para>
        ///   <para>The function barrier operator value options are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO—The attribute is equal to the value.</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL—The attribute is not equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN—The attribute is greater than the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO—The attribute is greater than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN—The attribute is less than the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO—The attribute is less than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES—A bitwise AND operation where all bits in the value are present in the attribute (bitwise AND == value).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES—A bitwise AND operation where not all of the bits in the value are present in the attribute (bitwise AND != value).</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY—A bitwise AND operation where at least one bit in the value is present in the attribute (bitwise AND == True).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY—A bitwise AND operation where none of the bits in the value are present in the attribute (bitwise AND == False).</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>在基于函数的要素上设置可遍历性障碍。功能屏障可用于执行诸如限制跟踪从起点行进的距离或设置停止跟踪的最大值等操作。例如，每条行进线的长度将添加到到目前为止的总行进距离中。当行进的总长度达到指定的值时，迹线将停止。</para>
        /// <para>功能屏障组件如下：
        ///   <bulletList>
        ///     <bullet_item>函数 （Function） - 从多种不同的计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>属性 （Attribute） - 选择按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>运算符 - 从多个不同的运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 设置输入属性类型的特定值，如果发现该值将导致终止。</bullet_item><para/>
        ///     <bullet_item>使用局部值 - 计算每个方向的值，而不是整体全局值。例如，用于计算 Shape 长度之和的函数屏障，如果值大于或等于 4，则跟踪终止。在全局情况下，遍历值为 2 的两条边后，已达到形状长度总和 4，因此迹线停止。如果使用局部值，则沿每个路径的局部值会发生变化，因此跟踪会走得更远。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <bulletList>
        ///     <bullet_item>TRUE - 使用局部值。</bullet_item><para/>
        ///     <bullet_item>FALSE - 使用全局值。这是默认设置。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>功能屏障功能选项的可能值如下：</para>
        ///   <bulletList>
        ///     <bullet_item>AVERAGE - 输入值的平均值。</bullet_item><para/>
        ///     <bullet_item>COUNT - 要素数。</bullet_item><para/>
        ///     <bullet_item>MAX - 输入值的最大值。</bullet_item><para/>
        ///     <bullet_item>MIN - 输入值的最小值。</bullet_item><para/>
        ///     <bullet_item>添加 （ADD） - 添加值。</bullet_item><para/>
        ///     <bullet_item>SUBTRACT - 减去值。子网控制器和环路追踪类型不支持减法函数。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>例如，起点要素的值为 20。下一个要素的值为 30。如果使用最小值函数，则结果为 20，最大值为 30，加法为 50，平均值为 25，count 为 2，减法为 -10。</para>
        ///   <para>函数屏障运算符值选项如下：</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO - 属性等于值。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN - 属性大于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO - 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN - 属性小于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO - 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_THE_VALUES - 按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INCLUDE_ANY - 按位 AND 操作，其中值中的任何位都不存在在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Function Barriers")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _function_barriers { get; set; } = null;


        /// <summary>
        /// <para>Include Barrier Features</para>
        /// <para><xdoc>
        ///   <para>Specifies whether the traversability barrier features are included in the trace results. Traversability barriers are optional even if they have been preset in the subnetwork definition.</para>
        ///   <bulletList>
        ///     <bullet_item>INCLUDE_BARRIERS—Traversability barriers are included in the trace results. This is the default.</bullet_item><para/>
        ///     <bullet_item>EXCLUDE_BARRIERS—Traversability barriers are not included in the trace results.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定追踪结果中是否包括可遍历障碍要素。可遍历性障碍是可选的，即使它们已在子网定义中预设。</para>
        ///   <bulletList>
        ///     <bullet_item>INCLUDE_BARRIERS—可遍历性障碍包含在追踪结果中。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>EXCLUDE_BARRIERS - 追踪结果中不包括可遍历性障碍。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Barrier Features")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_barriers_value _include_barriers { get; set; } = _include_barriers_value._true;

        public enum _include_barriers_value
        {
            /// <summary>
            /// <para>INCLUDE_BARRIERS</para>
            /// <para>INCLUDE_BARRIERS—Traversability barriers are included in the trace results. This is the default.</para>
            /// <para>INCLUDE_BARRIERS—可遍历性障碍包含在追踪结果中。这是默认设置。</para>
            /// </summary>
            [Description("INCLUDE_BARRIERS")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_BARRIERS</para>
            /// <para>EXCLUDE_BARRIERS—Traversability barriers are not included in the trace results.</para>
            /// <para>EXCLUDE_BARRIERS - 追踪结果中不包括可遍历性障碍。</para>
            /// </summary>
            [Description("EXCLUDE_BARRIERS")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Apply Traversability To</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of traversability to enforce. Traversability scope dictates whether traversability is enforced at junctions, edges, or both. For example, if a condition barrier is defined to stop the trace if DEVICESTATUS is set to Open and the traversability scope is set to edges only, the trace would not stop even if the trace encounters an open device, because DEVICESTATUS is only applicable for junctions. In other words, this parameter indicates to the trace whether to ignore junctions, edges, or both.</para>
        ///   <bulletList>
        ///     <bullet_item>BOTH_JUNCTIONS_AND_EDGES—Apply traversability to both junctions and edges.</bullet_item><para/>
        ///     <bullet_item>JUNCTIONS_ONLY—Apply traversability to only junctions.</bullet_item><para/>
        ///     <bullet_item>EDGES_ONLY—Apply traversability to only edges.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要强制实施的遍历性类型。可遍历性范围决定了是在交汇点和/或边强制实施遍历性。例如，如果将条件屏障定义为在 DEVICESTATUS 设置为 Open 且可遍历性作用域设置为仅边时停止跟踪，则即使跟踪遇到打开的设备，跟踪也不会停止，因为 DEVICESTATUS 仅适用于交汇点。换言之，此参数向迹线指示是忽略交汇点和/或边。</para>
        ///   <bulletList>
        ///     <bullet_item>BOTH_JUNCTIONS_AND_EDGES - 将可遍历性应用于交汇点和边。</bullet_item><para/>
        ///     <bullet_item>JUNCTIONS_ONLY - 仅将可遍历性应用于交汇点。</bullet_item><para/>
        ///     <bullet_item>EDGES_ONLY - 仅将可遍历性应用于边。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Apply Traversability To")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _traversability_scope_value _traversability_scope { get; set; } = _traversability_scope_value._BOTH_JUNCTIONS_AND_EDGES;

        public enum _traversability_scope_value
        {
            /// <summary>
            /// <para>Both junctions and edges</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Both junctions and edges")]
            [GPEnumValue("BOTH_JUNCTIONS_AND_EDGES")]
            _BOTH_JUNCTIONS_AND_EDGES,

            /// <summary>
            /// <para>Junctions only</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Junctions only")]
            [GPEnumValue("JUNCTIONS_ONLY")]
            _JUNCTIONS_ONLY,

            /// <summary>
            /// <para>Edges only</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("Edges only")]
            [GPEnumValue("EDGES_ONLY")]
            _EDGES_ONLY,

        }

        /// <summary>
        /// <para>Propagators</para>
        /// <para><xdoc>
        ///   <para>Specifies the network attributes to propagate as well as how that propagation will occur during a trace. Propagated class attributes denote the key values on subnetwork controllers that are disseminated to the rest of the features in the subnetwork. For example, in an electric distribution model, you can propagate the phase value.</para>
        ///   <para>Propagators components are as follows:
        ///   <bulletList>
        ///     <bullet_item>Attribute—Filter by any network attribute defined in the system.  </bullet_item><para/>
        ///     <bullet_item>Substitution Attribute—Use a substituted value instead of bitset network attribute values. Substitutions are encoded based on the number of bits in the network attribute being propagated. A substitution is a mapping of each bit in phase to another bit. For example, for Phase AC, one substitution could map bit A to B, and bit C to null. In this example, the substitution for 1010 (Phase AC) is 0000-0010-0000-0000 (512). The substitution captures the mapping so you know that Phase A was mapped to B and Phase C was mapped to null, and not the other way around (that is, Phase A was not mapped to null and Phase C was not mapped to B).  </bullet_item><para/>
        ///     <bullet_item>Function—Choose from a number of calculation functions.  </bullet_item><para/>
        ///     <bullet_item>Operator—Choose from a number of operators.  </bullet_item><para/>
        ///     <bullet_item>Value—Provide a specific value for the input attribute type that would cause termination based on the operator value.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>Possible values for the propagators function are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND—Compare the values from one feature to the next.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN—Get the minimum value.</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX—Get the maximum value.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>The propagator operator values are as follows:</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO—The attribute is equal to the value.</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL—The attribute is not equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN—The attribute is greater than the value.</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO—The attribute is greater than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN—The attribute is less than the value.</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO—The attribute is less than or equal to the value.</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES—A bitwise AND operation where all bits in the value are present in the attribute (bitwise AND == value).</bullet_item><para/>
        ///     <bullet_item>DOES NOT INCLUDE_THE_VALUES—A bitwise AND operation where not all of the bits in the value are present in the attribute (bitwise AND != value).</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY—A bitwise AND operation where at least one bit in the value is present in the attribute (bitwise AND == True).</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INLCUDE_ANY—A bitwise AND operation where none of the bits in the value are present in the attribute (bitwise AND == False).</bullet_item><para/>
        ///   </bulletList>
        ///   <para>This parameter is only available via Python.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要传播的网络属性以及该传播在追踪期间的发生方式。传播的类属性表示子网控制器上的键值，这些键值将传播到子网中的其余要素。例如，在配电模型中，可以传播相位值。</para>
        /// <para>传播器组件如下：
        ///   <bulletList>
        ///     <bullet_item>属性 - 按系统中定义的任何网络属性进行过滤。</bullet_item><para/>
        ///     <bullet_item>替换属性 - 使用替换值而不是位集网络属性值。替换是根据正在传播的网络属性中的位数进行编码的。替换是相位中每个位到另一个位的映射。例如，对于相位 AC，一个替换可以将位 A 映射到 B，将位 C 映射到 null。在此示例中，1010（相位 AC）的替换为 0000-0010-0000-0000 （512）。替换捕获映射，因此您知道阶段 A 映射到 B，阶段 C 映射到 null，而不是相反（即阶段 A 未映射到 null，阶段 C 未映射到 B）。 </bullet_item><para/>
        ///     <bullet_item>函数 （Function） - 从多个计算函数中进行选择。</bullet_item><para/>
        ///     <bullet_item>运算符 （Operator） - 从多个运算符中进行选择。</bullet_item><para/>
        ///     <bullet_item>值 - 根据运算符值为输入属性类型提供导致终止的特定值。</bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        ///   <para>传播器函数的可能值如下：</para>
        ///   <bulletList>
        ///     <bullet_item>PROPAGATED_BITWISE_AND - 将一个要素的值与下一个要素的值进行比较。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MIN - 获取最小值。</bullet_item><para/>
        ///     <bullet_item>PROPAGATED_MAX - 获取最大值。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>传播器运算符值如下：</para>
        ///   <bulletList>
        ///     <bullet_item>IS_EQUAL_TO - 属性等于值。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_EQUAL - 属性不等于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN - 属性大于值。</bullet_item><para/>
        ///     <bullet_item>IS_GREATER_THAN_OR_EQUAL_TO - 属性大于或等于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN - 属性小于值。</bullet_item><para/>
        ///     <bullet_item>IS_LESS_THAN_OR_EQUAL_TO - 属性小于或等于值。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_THE_VALUES - 按位 AND 操作，其中值中的所有位都存在于属性中（按位 AND == 值）。</bullet_item><para/>
        ///     <bullet_item>DOES NOT INCLUDE_THE_VALUES - 一种按位 AND 操作，其中值中并非所有位都存在于属性中（按位 AND ！= 值）。</bullet_item><para/>
        ///     <bullet_item>INCLUDES_ANY - 按位 AND 操作，其中值中至少有一位存在于属性中 （按位 AND == True）。</bullet_item><para/>
        ///     <bullet_item>DOES_NOT_INLCUDE_ANY - 按位 AND 操作，其中值中不存在任何位在属性中 （按位 AND == False）。</bullet_item><para/>
        ///   </bulletList>
        ///   <para>此参数仅通过 Python 提供。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Propagators")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _propagators { get; set; } = null;


        /// <summary>
        /// <para>Updated Utility Network</para>
        /// <para></para>
        /// <para></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Updated Utility Network")]
        [Description("")]
        [Option(OptionTypeEnum.derived)]
        public object _out_utility_network { get; set; }


        /// <summary>
        /// <para>Include Geometry</para>
        /// <para><xdoc>
        ///   <para>Specifies whether to include the geometry in the results.
        ///   <bulletList>
        ///     <bullet_item>Checked—Include the geometry in the results.  </bullet_item><para/>
        ///     <bullet_item>Unchecked—Do not include the geometry in the results. This is the default.  </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        /// <para>指定是否在结果中包括几何图形。
        ///   <bulletList>
        ///     <bullet_item>选中 （Checked） - 在结果中包括几何。</bullet_item><para/>
        ///     <bullet_item>未选中 （Unchecked） - 在结果中不包括几何。这是默认设置。 </bullet_item><para/>
        ///   </bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Include Geometry")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public _include_geometry_value _include_geometry { get; set; } = _include_geometry_value._false;

        public enum _include_geometry_value
        {
            /// <summary>
            /// <para>INCLUDE_GEOMETRY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("INCLUDE_GEOMETRY")]
            [GPEnumValue("true")]
            _true,

            /// <summary>
            /// <para>EXCLUDE_GEOMETRY</para>
            /// <para></para>
            /// <para></para>
            /// </summary>
            [Description("EXCLUDE_GEOMETRY")]
            [GPEnumValue("false")]
            _false,

        }

        /// <summary>
        /// <para>Result Types</para>
        /// <para><xdoc>
        ///   <para>Specifies the type of results to export.</para>
        ///   <bulletList>
        ///     <bullet_item>Connectivity—Return features that are connected via geometric coincidence or connectivity associations. This is the default.</bullet_item><para/>
        ///     <bullet_item>Features—Return feature-level information in the response.</bullet_item><para/>
        ///     <bullet_item>Containment and attachment associations—Return features that are associated via containment and structural attachment associations.</bullet_item><para/>
        ///   </bulletList>
        ///   <para>For enterprise geodatabases, this parameter requires ArcGIS Enterprise 10.7 or later.
        ///   <bulletList>
        ///     <bullet_item>The containment and attachment associations option requires ArcGIS Enterprise 10.8.1 or later.  </bullet_item></bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>指定要导出的结果类型。</para>
        ///   <bulletList>
        ///     <bullet_item>连通性 - 返回通过几何重合或连通性关联连接的要素。这是默认设置。</bullet_item><para/>
        ///     <bullet_item>特征 - 在响应中返回特征级信息。</bullet_item><para/>
        ///     <bullet_item>包含和附件关联 - 返回通过包含和结构附件关联关联关联的要素。</bullet_item><para/>
        ///   </bulletList>
        /// <para>对于企业级地理数据库，此参数需要 ArcGIS Enterprise 10.7 或更高版本。
        ///   <bulletList>
        /// <bullet_item>包含和附件关联选项需要 ArcGIS Enterprise 10.8.1 或更高版本。 </bullet_item></bulletList>
        ///   </para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Result Types")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _result_types { get; set; } = null;


        /// <summary>
        /// <para>Result Network Attributes</para>
        /// <para><xdoc>
        ///   <para>The network attributes that will be included in the results.</para>
        ///   <para>For enterprise geodatabases, this parameter requires ArcGIS Enterprise 10.7 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>将包含在结果中的网络属性。</para>
        ///   <para>对于企业级地理数据库，此参数需要 ArcGIS Enterprise 10.7 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Result Network Attributes")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public List<object> _result_network_attributes { get; set; } = null;


        /// <summary>
        /// <para>Result Fields</para>
        /// <para><xdoc>
        ///   <para>Fields from a feature class that will be returned as results. The values of the field will be returned in the results for the features in the subnetwork.</para>
        ///   <para>For enterprise geodatabases, this parameter requires ArcGIS Enterprise 10.7 or later.</para>
        /// </xdoc></para>
        /// <para><xdoc>
        ///   <para>要素类中将作为结果返回的字段。字段的值将在子网中要素的结果中返回。</para>
        ///   <para>对于企业级地理数据库，此参数需要 ArcGIS Enterprise 10.7 或更高版本。</para>
        /// </xdoc></para>
        /// <para></para>
        /// </summary>
        [DisplayName("Result Fields")]
        [Description("")]
        [Option(OptionTypeEnum.optional)]
        public object _result_fields { get; set; } = null;


        public ExportSubnetwork SetEnv()
        {
            base.SetEnv();
            return this;
        }

    }

}